//
//  CFDProblemFactory.h
//  NSESolver
//
//  Created by Patrick Zulian on 5/6/11.
//  Copyright 2011 ICS - USI - Lugano. All rights reserved.
//

#ifndef NSESolver_CFDProblemFactory_H
#define NSESolver_CFDProblemFactory_H

#include <string>

#include "Reference.h"
#include "CartesianTopology.h"
#include "CFDProblem.h"


#include "ExodusObjekt.h"

namespace nsesolver {
    
    
    class CFDProblemFactory {
    private:
        static void assignFlag(int el, int ssID, Obstacle & obstacle, ExodusObjekt & exodusObject, const Vector2d & sw, const Vector2d & ne, double hX, double hY);
        static void assignObstaclesAndBoundary(Obstacle & obstacle, ExodusObjekt & exodusObject, const Vector2d & sw, const Vector2d & ne, double hX, double hY);
        
    public:
        static const Reference< CFDProblem > createProblem(const std::string &path, const mpi::CartesianTopology & cart, const int imax, const int jmax);
        
    };
    
    
}
#endif //NSESolver_CFDProblemFactory_H
